Method and apparatus for computing error locator polynomial for use in a Reed-Solomon decoder

ABSTRACT

In a decoding system which decodes a transmitted signal encoded by using a Reed-Solomon code, an error locator polynomial of the nth iteration is calculated based on a predetermined number of syndrome values; a group of variables of the (n-1)st iteration including a discrepancy and an error locator polynomial thereof; and an error locator polynomial of the (n-2)nd iteration. The method for providing the error locator polynomial comprises the steps of calculating a discrepancy of the nth iteration based on the syndrome values and the error locator polynomial of the (n-1)st iteration; calculating a temporal term based on the discrepancy of the (n-1)st iteration and the error locator polynomial of the (n-2)nd iteration; determining a correction term based on the temporal term and the discrepancy of the nth iteration; and computing the error locator polynomial of the nth iteration based on the correction term and the error locator polynomial of the (n-1)st iteration.

FIELD OF THE INVENTION

The present invention relates to a method and apparatus for correctingerrors present in stored or transmitted data; and, more particularly, toa method and apparatus for determining coefficients of an error locatorpolynomial for use in correcting errors in the data encoded by using aReed-Solomon code.

DESCRIPTION OF THE PRIOR ART

Noises occurring during a process of transmitting, storing or retrievingdata can in turn cause errors in the transmitted, stored or retrieveddata. Accordingly, various encoding techniques, having the capability ofrectifying such errors, for encoding the data to be transmitted orstored have been developed.

In such encoding techniques, a set of check bits is appended to a groupof message or information bits to form a codeword. The check bits, whichare determined by an encoder, are used to detect and correct the errors.In this regard, the encoder essentially treats the bits comprising themessage bits as coefficients of a binary message polynomial and derivesthe check bits by operating a generator polynomial G(X) on the messagepolynomial by multiplication or division. The generator polynomial isselected to impart desired properties to a codeword upon which itoperates so that the codeword will belong to a particular class oferror-correcting binary group codes(see, e.g., S. Lin et al., "ErrorControl Coding: Fundamentals and Applications", Prentice-Hall, 1983).

One class of error correcting codes is the well-known BCH(Bose-Chaudhuri-Hocquenghen) codes, which includes Reed-Solomon codes.The mathematical basis of Reed-Solomon codes is explained in, e.g., theaforementioned reference by Lin et al. and also in Berlekamp, "AlgebraicCoding Theory", McGraw-Hill, 1968, which is further referred to in U.SPat. No. 4,162,480 issued to Berlekamp.

A Reed-Solomon code has a generator polynomial G(X) defined as follows:##EQU1## wherein a is a primitive element in the Galois Field GF(2^(m)),and d is the code's designed distance.

In the process of receiving or retrieving a transmitted or storedcodeword, certain attendant noises may have been converted to an errorpattern in the codeword. In order to deal with the error pattern imposedupon Reed-Solomon codes, a four step procedure is generally utilized. Indiscussing the error-correcting procedure, reference shall be made to aReed-Solomon code consisting of codewords containing n m-bit symbols (ofwhich k symbols are informational symbols and n-k symbols are checksymbols). As a first error correcting step, syndrome values S₀,S₁, . . .,S_(n-k-1) are calculated. As a second step, using the syndrome values,coefficients of an error locator polynomial σ(X) are calculated. In athird step, the error locator polynomial σ(X) is solved to obtain itsroots X_(i), which represent the error locations in the receivedcodewords. As a fourth step, using the error locations X_(i) and thesyndrome values, error values are calculated. Mathematical expressionsfor the syndrome values and the coefficients of the error locatorpolynomial are set forth in the afore-referenced U.S. Pat. No. 4,162,480issued to Berlekamp.

The second step in the generalized error correcting procedure describedabove, i.e., the step of calculating the coefficients of the errorlocator polynomial, requires a rather laborious computational task. Apopular algorithm for obtaining the coefficients of the error locatorpolynomial is the Berlekamp-Massey algorithm which is described in theafore-mentioned references.

In the Berlekamp-Massey algorithm, the error locator polynomial isobtained by an iterative method. Specifically, the error locatorpolynomial is updated based on the syndrome values on each iteration. Inorder to calculate the coefficients of the error locator polynomial,various variables, e.g., correction terms, discrepancy, etc., areintroduced. The multipliers are used to update the variables and theerror locator polynomial on each iteration.

For a t-error correcting Reed-Solomon coder 6t multipliers are needed incalculating the error locator polynomial using the Berlekamp-Masseyalgorithm, wherein t represents the error correcting capability of thecode. The syndrome values are inputted every 2 symbol clock cycles to beused in calculating the error locator polynomial. In other words, ittakes two clock cycles in carrying out each iteration.

The Berlekamp algorithm has been modified by Liu, wherein the number ofmultipliers is reduced to 4t+1, while the syndrome values are inputtedevery 3 symbol clock cycles e.g., K. Y. Liu, "Architecture for VLSIDesign of Reed-Solomon Decoders", IEEE Transactions on Computers, vol.c-33, NO. 2, pp. 178-189, February, 1984). In the Liu algorithm, some ofthe variables are modified over those of the Berlekamp-Massey algorithmfor a more efficient processing.

Numerous variables are involved in calculating the error locatorpolynomial in these algorithms, however. Further, in each iteration,certain of the variables are calculated prior to certain other variablesbecause the former are used in calculating the latter. Consequently, allthe multipliers are not used at the same time in each clock cycle.

SUMMARY OF THE INVENTION

It is, therefore, a primary object of the present invention to providean improved method and apparatus capable of calculating an error locatorpolynomial by employing a reduced number of multipliers, therebyachieving a reduction in the processing time thereof as well as themanufacturing cost of the apparatus.

In accordance with the present invention, there is provided a method forproviding an error locator polynomial of an nth iteration for use in adecoding system for decoding a transmitted signal encoded by using aReed-Solomon code, based on a predetermined number of syndrome values, agroup of variables of an (n-1)st iteration including a discrepancy andan error locator polynomial thereof, and an error locator polynomial ofan (n-2)nd iteration, said method comprising the steps of:

(a) determining a temporal term based on the discrepancy of the (n-1)stiteration and the error locator polynomial of the (n-2)nd iteration;

(b) calculating a discrepancy of the nth iteration based on the syndromevalues and the error locator polynomial of the (n-1)st iteration;

(c) deciding a correction term based on said temporal term and thediscrepancy of the nth iteration; and

(d) computing the error locator polynomial of the nth iteration based onthe correction term and the error locator polynomial of the (n-1)stiteration.

BRIEF DESCRIPTION OF THE DRAWINGS

The above and other objects and features of the present invention willbecome apparent from the following description of preferred embodimentsgiven in conjunction with the accompanying drawings, in which:

FIG. 1A shows a flow chart for calculating an error locator polynomialin the Berlekamp-Massey algorithm;

FIG. 1B represents a flow chart for calculating an error locatorpolynomial in the Liu algorithm;

FIG. 1C offers a flow chart for calculating an error locator polynomialin accordance with the present invention;

FIGS. 2A to 2C illustrate a timing diagram for calculating the inventiveerror locator polynomial; and

FIG. 3 depicts a block diagram of an apparatus for calculating the errorlocator polynomial in accordance with the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Referring to FIGS. 1A to 1C, there are shown simplified flow charts forcalculating an error locator polynomial in the Berlekamp-Masseyalgorithm, the Liu algorithm and the present invention, respectively.

The complete procedure to obtain an error locator polynomial includes amultiple number of, e.g., 2t, iterations, wherein t represents the errorcorrecting capability of the code; and, on each iteration, the errorlocator polynomial is updated once(see Berlekamp, Algebraic CodingTheory, McGraw-Hill, 1968). The error locator polynomial is determinedbased on 2t syndrome values, wherein the syndrome values are obtainedfrom received codewords encoded by using a Reed-Solomon code. The rootsof the error locator polynomial indicate the error locations.

In the flow charts shown in FIGS. 1A to 1C, a part of the procedureperformed on one, e.g, nth, iteration is exemplarily given, includingsuch operation that imposes a large computational burden, e.g., amultiplication operation on a Galois Field. Specifically, in theprocedure depicted in FIGS. 1A to 1C, the error locator polynomial isupdated as follows:

    σ.sub.n (x)=σ.sub.n-1 (x)-d.sub.n ×d.sub.n-1.sup.-1 ·σ.sub.n-2 (x)                             (2)

wherein n denotes the nth iteration; d_(n) denotes a discrepancy whichis calculated by using the syndrome values and the error locatorpolynomial of the previous iteration; and σ₀ (X) and σ₁ (X) are 1 and1-d₁ X, respectively. As shown in FIG. 1A, the calculation of Eq. (2) ispartitioned into 3 parts, in the Berlekamp-Massey algorithm.Specifically, in step S11, the discrepancy d_(n) is calculated based onthe syndrome values and the error locator polynomial of the previousiteration σ_(n-1) (X). In step S12 the error locator polynomial isupdated based on the discrepancy d_(n) obtained in step S11 and acorrection term. The correction term b_(n) (X) is introduced topartition Eq. (2) and is defined as follows:

    b.sub.n (x)=d.sub.n.sup.-1 ·σ.sub.n-1 (x)   (3

The correction term from the previous iteration, i.e., b_(n-1) (X), isused in obtaining the error locator polynomial σ_(n) (X). The correctionterm is also updated in step S12 and used in updating the error locatorpolynomial on a next iteration.

In FIG. 1A, the values updated in each step are presented. The twovalues specified in corresponding parentheses are multiplied to updatethe discrepancy d_(n), the correction term b_(n) (X) , and the errorlocator polynomial σ_(n) (X) . Each of the values represented in theform of a polynomial, e.g., b_(n) (X), includes a set of values whosenumber is not greater than 2t. Therefore, calculation of each valueincludes a vector multiplication, wherein as many as 2t multipliers areneeded to update each value, each multiplier performing a multiplicationoperation in the Galois Field. The procedural steps taken in the flowchart of FIG. 1A are summarized in Table 1:

                  TABLE 1                                                         ______________________________________                                        1st clock cycle                                                                              2nd clock cycle                                                ______________________________________                                        M11    d.sub.n                                                                M12                σ.sub.n (x) = σ.sub.n-1 (x) - d.sub.n x                           · b.sub.n-1 (x)                                   M13                b.sub.n (x) = d.sub.n.sup.-1 · σ.sub.n-1                        (x)                                                       ______________________________________                                    

wherein M11, M12, and M13 denote a set of 2t multipliers in the GaloisField, respectively. Calculation of the error locator polynomial σ_(n)(X) and the correction term b_(n) (X) may be performed in a same clockcycle because one does not need the result from the other. It can beeasily appreciated that 6t multipliers are needed altogether and eachiteration is completed in 2 clock cycles in the Berlekamp-Masseyalgorithm.

In the Liu algorithm modifying the Berlekamp-Massey algorithm,calculation of Eq. (2) is also partitioned into 3 parts. However,instead of the correction term used in the Berlekamp-Massey algorithm,an intermediate term d_(n) * is used. The intermediate term is definedas:

    d.sub.n *=d.sub.n d.sub.n-1.sup.-1                         (4)

wherein d_(n) and d_(n-1) represent the discrepancy of the current andthat of the previous iteration, respectively.

FIG. 1B shows the procedure performed in the Liu algorithm in eachiteration. Specifically, the operation performed in step S21 is the sameas that of step S11 in FIG. 1A, Wherein the discrepancy d_(n) iscalculated. In step S22, the intermediate term d_(n) * is calculatedbased on the discrepancy d_(n) of the current iteration and d_(n-1) ofthe previous iteration. In step S23, the error locator polynomial isupdated based on the intermediate term d_(n) * obtained in step S22 andthe error locator polynomial of the (n-2)nd iteration σ_(n-2) (X). Theresult of the operation depicted in FIG. 1B is the same as that of FIG.1A.

In FIG. 1B, the values to be updated in each step are represented.Calculation of the discrepancy d_(n) and the error locator polynomialσ_(n) (X) includes a vector multiplication, while calculation of theintermediate term d_(n) * requires a scalar multiplication only. Theoperations performed in the flow chart of FIG. 1B are summarized inTable:

                  TABLE 2                                                         ______________________________________                                        1st          2nd         3rd                                                  clock cycle  clock cycle clock cycle                                          ______________________________________                                        M21  d.sub.n                                                                  m22              d.sub.n * = d.sub.n d.sub.n-1.sup.-1                         M23                          σ.sub.n (x) = σ.sub.n-1 (x) -                                     d.sub.n *x · σ.sub.n-2            ______________________________________                                                                     (x)                                          

wherein M21, M23 denote a set of 2t multipliers, respectively, and m22denotes a scalar multiplier. The calculation of the three termsspecified in Table 2 is performed in different clock cycles becaused_(n) * and σ_(n) (X) can be calculated afterd_(n) and d_(n) * have beenobtained, respectively. It can be easily seen that (4t+1) multipliersare needed and each iteration is completed in 3 clock cycles in the Liualgorithm.

Referring to FIG. 1C, there is shown a procedure performed in eachiteration in accordance with the present invention. In the presentinvention, a temporal term and a modified correction term areintroduced; and, calculation of Eq. (2) is partitioned into 4 parts,wherein only three of them require a vector multiplication. The temporalterm T_(n) (x) is defined as:

    T.sub.n (x)=d.sub.n-1.sup.-1 ·σ.sub.n-2 (x) (5)

wherein d_(n-1) is the discrepancy of the previous, i.e, (n-1)st,iteration and σ_(n-2) (X) is the error locator polynomial of the (n-2)nditeration. The modified correction term c_(n) (X) is defined as:

    c.sub.n (X)=d.sub.n ·T.sub.n (X)                  (6)

Specifically, in step S31, the discrepancy d_(n) and the temporal termT_(n) (x) are calculated. In step S32, the modified correction termc_(n) (X) is determined based on the temporal term T_(n) (x) and thediscrepancy d_(n) obtained in step S31. In step S33, the error locatorpolynomial σ_(n) (X) is updated using the modified correction term c_(n)(X). The result of the operation depicted in FIG. 1C is the same as thatof FIGS. 1A and 1B.

In FIG. 1C, the values to be updated in each step are represented.Calculation of the discrepancy d_(n), the temporal term T_(n) (x) andthe modified correction term c_(n) (X) includes a vector multiplication,while updating of the error locator polynomial σ_(n) (X) requires avector addition only. It can be readily appreciated that the discrepancyd_(n) and the temporal term T_(n) (X) can be calculate in a same clockcycle using different sets of multipliers, because they do not requirethe result from each other. Furthermore, steps S32 and S33 can beperformed in one clock cycle, because the latter does not require amultiplication operation. The operations performed in the flow chart ofFIG. 1C are summarized in Table 3:

                  TABLE 3                                                         ______________________________________                                        1st clock cycle      2nd clock cycle                                          ______________________________________                                        M31     d.sub.n                                                               M32     T.sub.n (x) = d.sub.n-1.sup.-1 · σ.sub.n-2                                      c.sub.n (x) = d.sub.n · T.sub.n (x)         A33                      σ.sub.n (x) = σ.sub.n-1 (x) -                                     x · c.sub.n (x)                             ______________________________________                                    

wherein M31, M32 denote a set of 2t multipliers and A33 denotes a set ofadders. It can be easily seen that 4t multipliers in the Galois Fieldare needed and each iteration is completed in 2 clock cycles in case ofthe present algorithm.

The operations explained above are summarized and compared in FIGS. 2Ato 2C. In the Berlekamp-Massey and Liu algorithms, different multipliersare used in calculating different values as shown in FIGS. 2A and 2B.However, in the present invention, a multiplier, i.e., M32, is employedto calculate two different variables alternately in each clock cycle asdepicted in FIG. 2C, to thereby reducing the number of multipliers andthe clock cycle for each iteration.

Referring to FIG. 3, there is shown a block diagram of an apparatus 1for updating the error locator polynomial in accordance with the presentinvention. The apparatus 1 includes two multiplication blocks 10 and 30,and an addition block 60, which correspond to M31, M32 and A33 shown inTable 3.

The first multiplication block 10 calculates the discrepancy d_(n),based on the syndrome values S and the error locator polynomial of theprevious iteration σ_(n-1) (X). The second multiplication block 30calculates the temporal term T_(n) (x) and the modified correction termc_(n) (X) alternately, in response to a set of d_(n-1) ⁻¹ and σ_(n-2)(X), and a set of T_(n) (x) and d_(n), respectively. The addition block60 updates the error locator polynomial σ_(n) (X) in response to themodified correction term c_(n) (X). Each of the multiplication blocks 10and 30 may include 2t multipliers in the Galois Field for the vectormultiplication. The addition block 60 may include 2t adders for thevector addition.

Specifically, the syndrome values S and the error locator polynomial ofthe previous iteration σ_(n-1) (X) are coupled at the firstmultiplication block 10, thereby providing the discrepancy d_(n). Thediscrepancy d_(n) is coupled to a delay and inverse block 20, therebyproviding d_(n-1) ⁻¹, i.e., an inverse of the discrepancy of theprevious iteration, to the second multiplication block 30 via amultiplexor 25. The discrepancyd_(n) of the current iteration is alsocoupled to the multiplication block 30 via the multiplexor 25. At themultiplexor 25, one of the inputted values, i.e., d_(n) or d_(n-1) ⁻¹,is selected and provided to the second multiplication block 30.Specifically, at the first clock cycle of each iteration, d_(n-1) ⁻¹ isselected, while d_(n) is selected at the second clock cycle. σ_(n-2) (X)and T_(n) (X) are also inputted alternately to the second multiplicationblock 30, to thereby provide the temporal term T_(n) (X) and themodified correction term C_(n) (X) to a demultiplexor 40, alternately.The temporal term T_(n) (X) is fed from the demultiplexor 40 to amultiplexor 50, to be provided to the second multiplication block 30 onthe second clock cycle. The modified correction term c_(n) (X) is fedfrom the demultiplexor 40 to the addition block 60. At the additionblock 60, the error locator polynomial is updated based on the modifiedcorrection term c_(n) (X) fed from the demultiplexor 40 and the errorlocator polynomial of the previous iteration σ_(n-1) (X) which isprovided from a delay block 80. The error locator polynomial of theprevious iteration σ_(n-1) (X) is also coupled to the multiplexor 50 viaa delay block 70, to be provided to the second multiplication block 30for the calculation of the temporal term on a next iteration.

By using the apparatus presented above, the error locator polynomial canbe updated in two clock cycles.

While the present invention has been described with respect to theparticular embodiments, it will be apparent to those skilled in the artthat various changes and modifications may be made without departingfrom the spirit and scope of the invention as defined in the followingclaims.

What is claimed is:
 1. A method for providing an error locatorpolynomial of an nth iteration for use in a decoding system for decodinga transmitted signal encoded by using a Reed-Solomon code, based on apredetermined number of syndrome values, a group of variables of an(n-1)st iteration including a discrepancy and an error locatorpolynomial thereof, and an error locator polynomial of an (n-2)nditeration, said method comprising the steps of:(a) determining atemporal term based on the discrepancy of the (n-1)st iteration and theerror locator polynomial of the (n-2)nd iteration; (b) calculating adiscrepancy of the nth iteration based on the syndrome values and theerror locator polynomial of the (n-1)st iteration; (c) deciding acorrection term based on said temporal term and the discrepancy of thenth iteration; and (d) computing the error locator polynomial of the nthiteration based on the correction term and the error locator polynomialof the (n-1)st iteration.
 2. The method of claim 1, wherein said steps(a) and (b) as one unit of operation, and said steps (c) and (d) asanother unit of operation are performed alternately, wherein each ofsaid steps in each unit of operation is performed in a same clock cycle.3. The method of claim 1, wherein the temporal term T(x) is representedas:

    T(x)=d.sub.n-1.sup.-1 ·σ.sub.n-2 (x),

d_(n-1) and σ_(n-2) (x) being the discrepancy of the (n-1)st iterationand the error locator polynomial of the (n-2)nd iteration; thecorrection term c(x) is represented as:

    c(x)=d.sub.n ·T(x)

d_(n) being the discrepancy of the nth iteration; and the error locatorpolynomial of the nth iteration σ_(n) (x) is represented as:

    σ.sub.n (x)=σ.sub.n-1 (x)-x·c(x),

σ_(n-1) (x) being the error locator polynomial of the (n-1)st iteration.4. An apparatus for providing an error locator polynomial of an nthiteration for use in a decoding system for decoding a transmitted signalencoded by using a Reed-Solomon code, based on a predetermined number ofsyndrome values, a group of variables of an (n-1)st iteration includinga discrepancy and an error locator polynomial thereof, and an errorlocator polynomial of an (n-2)nd iteration, said apparatus comprising:afirst multiplication block for calculating a discrepancy of the nthiteration, based on the syndrome values and the error locator polynomialof the (n-1)st iteration; a second multiplication block for alternatelydetermining a temporal term based on the inverse of the discrepancy ofthe (n-1)st iteration and the error locator polynomial of the (n2)nditeration; and a correction term based on said temporal term and saiddiscrepancy of the nth iteration; and an addition block for computingthe error locator polynomial of the nth iteration based on saidcorrection term and said error locator polynomial of the (n-1)stiteration.
 5. The apparatus of claim 4, wherein the error locatorpolynomial of the nth iteration is provided in a set of two clock cyclesincluding a first and a second clock cycles; the discrepancy of the nthiteration and the temporal term are calculated at the first and thesecond multiplication blocks, respectively, during the first clockcycle; the correction term is calculated at the second multiplicationblock during the second clock cycle; and the error locator polynomial ofnth iteration is calculated at the addition block during the secondclock cycle.
 6. The apparatus of claim 4, wherein the temporal term T(x)is represented as:

    T(x)=d.sub.n-1.sup.-1 ·σ.sub.n-2 (x),

d_(n-1) and σ_(n-2) (x) being the discrepancy of the (n-1)st iterationand the error locator polynomial of the (n-2)nd iteration; thecorrection term c(x) is represented as:

    c(x)=d.sub.n ·T(x)

d_(n) being the discrepancy of the nth iteration; and the error locatorpolynomial of the nth iteration σ_(n) (x) is represented as:

    σ.sub.n (x)=σ.sub.n-1 (x)-x·c(x),

σ_(n-1) (x) being the error locator polynomial of the (n-1)st iteration.